<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Aria: ArFunctor Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Aria
   &#160;<span id="projectnumber">2.9.4</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classArFunctor.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classArFunctor-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">ArFunctor Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span><div class="ingroups"><a class="el" href="group__ImportantClasses.html">Important Classes</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>An object which allows storing a generalized reference to a method with an object instance to call later (used for callback functions)  
 <a href="classArFunctor.html#details">More...</a></p>

<p><code>#include &lt;ArFunctor.h&gt;</code></p>

<p>Inherited by <a class="el" href="classArConstFunctorC.html">ArConstFunctorC&lt; T &gt;</a>, <a class="el" href="classArConstFunctorC.html">ArConstFunctorC&lt; ArBatteryConnector &gt;</a>, <a class="el" href="classArConstFunctorC.html">ArConstFunctorC&lt; ArDaemonizer &gt;</a>, <a class="el" href="classArConstFunctorC.html">ArConstFunctorC&lt; ArLaserConnector &gt;</a>, <a class="el" href="classArConstFunctorC.html">ArConstFunctorC&lt; ArLCDConnector &gt;</a>, <a class="el" href="classArConstFunctorC.html">ArConstFunctorC&lt; ArPTZConnector &gt;</a>, <a class="el" href="classArConstFunctorC.html">ArConstFunctorC&lt; ArRobotConnector &gt;</a>, <a class="el" href="classArConstFunctorC.html">ArConstFunctorC&lt; ArSonarConnector &gt;</a>, <a class="el" href="classArFunctor1.html">ArFunctor1&lt; P1 &gt;</a>, <a class="el" href="classArFunctor1.html">ArFunctor1&lt; ArArgumentBuilder * &gt;</a>, <a class="el" href="classArFunctor1.html">ArFunctor1&lt; ArNMEAParser::Message &gt;</a>, <a class="el" href="classArFunctor1.html">ArFunctor1&lt; ArRobotPacket * &gt;</a>, <a class="el" href="classArFunctor1.html">ArFunctor1&lt; ArRobotParams * &gt;</a>, <a class="el" href="classArFunctor1.html">ArFunctor1&lt; char * &gt;</a>, <a class="el" href="classArFunctor1.html">ArFunctor1&lt; char ** &gt;</a>, <a class="el" href="classArFunctor1.html">ArFunctor1&lt; const char * &gt;</a>, <a class="el" href="classArFunctor1.html">ArFunctor1&lt; double &gt;</a>, <a class="el" href="classArFunctor1.html">ArFunctor1&lt; int &gt;</a>, <a class="el" href="classArFunctor1.html">ArFunctor1&lt; PacketType &gt;</a>, <a class="el" href="classArFunctor1.html">ArFunctor1&lt; unsigned char &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; T &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArActionAvoidFront &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArActionKeydrive &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArActionRobotJoydrive &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArACTS_1_2 &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArAnalogGyro &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArBatteryMTX &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArBumpers &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArCompassConnector &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArDataLogger &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArDPPTU &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArForbiddenRangeDevice &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArGPSConnector &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArGripper &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArIRs &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArKeyHandler &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArLaserFilter &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArLaserLogger &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArLaserReflectorDevice &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArLCDMTX &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArLMS1XX &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArLMS2xx &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArMode &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArModeActs &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArModeCamera &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArModeCommand &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArModeConfig &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArModeGripper &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArModeIO &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArModeLaser &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArModePosition &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArModeRobotStatus &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArModeSonar &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArNetServer &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArPTZ &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArRangeDevice &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArRatioInputJoydrive &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArRatioInputKeydrive &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArRatioInputRobotJoydrive &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArRobot &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArRobotBatteryPacketReader &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArRobotConfig &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArRobotConfigPacketReader &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArRobotJoyHandler &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArS3Series &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArSeekurIMU &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArSimUtil &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArSonarAutoDisabler &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArSonarDevice &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArSonarMTX &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArSpeechSynth &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArSZSeries &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArTCM2 &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArUrg &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArUrg_2_0 &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ArVCC4 &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ConnHandler &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; ExampleRangeDevice &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; GPSLogTask &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; GripperControlHandler &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; GyroTask &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; Joydrive &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; KeyPTU &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; PrintGripStatus &gt;</a>, <a class="el" href="classArFunctorC.html">ArFunctorC&lt; PrintingTask &gt;</a>, <a class="el" href="classArGlobalFunctor.html">ArGlobalFunctor</a>, <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; Ret &gt;</a>, <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; Ar3DPoint &gt;</a>, <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; ArBatteryMTX * &gt;</a>, <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; ArDeviceConnection * &gt;</a>, <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; ArLaser * &gt;</a>, <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; ArLCDMTX * &gt;</a>, <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; ArPose &gt;</a>, <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; ArSonarMTX * &gt;</a>, <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; ArTime &gt;</a>, <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; bool &gt;</a>, <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; const std::list&lt; ArArgumentBuilder * &gt; * &gt;</a>, <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; double &gt;</a>, <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; int &gt;</a>, <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; State &gt;</a>, <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; std::string &gt;</a>, <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; T &gt;</a>, <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; unsigned int &gt;</a>, <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; unsigned long &gt;</a>, and <a class="el" href="classArRetFunctor.html">ArRetFunctor&lt; void * &gt;</a>.</p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a4c94bb50825f76071b71b316dd0bb710"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c94bb50825f76071b71b316dd0bb710"></a>
virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArFunctor.html#a4c94bb50825f76071b71b316dd0bb710">getName</a> (void)</td></tr>
<tr class="memdesc:a4c94bb50825f76071b71b316dd0bb710"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the name of the functor. <br /></td></tr>
<tr class="separator:a4c94bb50825f76071b71b316dd0bb710"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c87b5ef305e653fe13258ebe77faee3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c87b5ef305e653fe13258ebe77faee3"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArFunctor.html#a1c87b5ef305e653fe13258ebe77faee3">invoke</a> (void)=0</td></tr>
<tr class="memdesc:a1c87b5ef305e653fe13258ebe77faee3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invokes the functor. <br /></td></tr>
<tr class="separator:a1c87b5ef305e653fe13258ebe77faee3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbc4f69001bac535e6507b4ca696c7d7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbc4f69001bac535e6507b4ca696c7d7"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArFunctor.html#acbc4f69001bac535e6507b4ca696c7d7">setName</a> (const char *name)</td></tr>
<tr class="memdesc:acbc4f69001bac535e6507b4ca696c7d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the name of the functor. <br /></td></tr>
<tr class="separator:acbc4f69001bac535e6507b4ca696c7d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9a7fc33dcc48e45635aaae33c3e6fa2"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArFunctor.html#ad9a7fc33dcc48e45635aaae33c3e6fa2">setNameVar</a> (const char *name,...)</td></tr>
<tr class="memdesc:ad9a7fc33dcc48e45635aaae33c3e6fa2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the name of the functor with formatting.  <a href="#ad9a7fc33dcc48e45635aaae33c3e6fa2">More...</a><br /></td></tr>
<tr class="separator:ad9a7fc33dcc48e45635aaae33c3e6fa2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99ebfaea66a1ded5795bb69f5d8a24a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99ebfaea66a1ded5795bb69f5d8a24a4"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArFunctor.html#a99ebfaea66a1ded5795bb69f5d8a24a4">~ArFunctor</a> ()</td></tr>
<tr class="memdesc:a99ebfaea66a1ded5795bb69f5d8a24a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:a99ebfaea66a1ded5795bb69f5d8a24a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:ab93fbce786c9a2163080fcbd531c2fa5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab93fbce786c9a2163080fcbd531c2fa5"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>myName</b></td></tr>
<tr class="separator:ab93fbce786c9a2163080fcbd531c2fa5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>An object which allows storing a generalized reference to a method with an object instance to call later (used for callback functions) </p>
<p>Functors are meant to encapsulate the idea of a pointer to a function which is a member of a class. To use a pointer to a member function, you must have a C style function pointer, 'void(Class::*)()', and a pointer to an instance of the class in which the function is a member of. This is because all non-static member functions must have a 'this' pointer. If they dont and if the member function uses any member data or even other member functions it will not work right and most likely crash. This is because the 'this' pointer is not the correct value and is most likely a random uninitialized value. The virtue of static member functions is that they do not require a 'this' pointer to be run. But the compiler will never let you access any member data or functions from within a static member function.</p>
<p>Because of the design of C++ never allowed for encapsulating these two pointers together into one language supported construct, this has to be done by hand. For conviences sake, there are functors (<a class="el" href="classArGlobalFunctor.html" title="Functor for a global function with no parameters. ">ArGlobalFunctor</a>, <a class="el" href="classArGlobalRetFunctor.html" title="Functor for a global function with return value. ">ArGlobalRetFunctor</a>) which take a pure C style function pointer (a non-member function). This is in case you want to use a functor that refers to a global C style function.</p>
<dl class="section note"><dt>Note</dt><dd>When supplying the function pointer to the callback constructor, make sure to pass the function pointer using "&amp;" (pointer reference syntax). When supplying a method, make sure to qualify the method name with the class name as well. For example: <div class="fragment"><div class="line"><a class="code" href="classArFunctorC.html">ArFunctorC&lt;int&gt;</a> example(&amp;obj, &amp;ExampleClass::exampleMethod);</div></div><!-- fragment --> otherwise you will recieve compile errors such as "invalid use of
member function", or that the function was not declared.</dd></dl>
<p><a class="el" href="classAria.html" title="Contains global initialization, deinitialization and other global functions. ">Aria</a> makes use of functors by using them as callback functions. Since <a class="el" href="classAria.html" title="Contains global initialization, deinitialization and other global functions. ">Aria</a> is programmed using the object oriented programming paradigm, all the callback functions need to be tied to an object and a particular instance. Thus the need for functors. Most of the use of callbacks simply take an <a class="el" href="classArFunctor.html" title="An object which allows storing a generalized reference to a method with an object instance to call la...">ArFunctor</a>, which is the base class for all the functors. This class only has the ability to invoke a functor. All the derivitave functors have the ability to invoke the correct function on the correct object.</p>
<p>Because functions have different signatures because they take different types of parameters and have different number of parameters, templates were used to create the functors. These are the base classes for the functors. These classes encapsulate everything except for the class type that the member function is a member of. This allows someone to accept a functor of type <a class="el" href="classArFunctor1.html">ArFunctor1&lt;int&gt;</a> which has one parameter of type 'int'. But they never have to know that the function is a member function of class 'SomeUnknownType'. These classes are:</p>
<p><a class="el" href="classArFunctor.html" title="An object which allows storing a generalized reference to a method with an object instance to call la...">ArFunctor</a>, <a class="el" href="classArFunctor1.html" title="Base class for functors with 1 parameter. ">ArFunctor1</a>, <a class="el" href="classArFunctor2.html" title="Base class for functors with 2 parameters. ">ArFunctor2</a>, <a class="el" href="classArFunctor3.html" title="Base class for functors with 3 parameters. ">ArFunctor3</a> <a class="el" href="classArRetFunctor.html" title="Base class for functors with a return value. ">ArRetFunctor</a>, <a class="el" href="classArRetFunctor1.html" title="Base class for functors with a return value with 1 parameter. ">ArRetFunctor1</a>, <a class="el" href="classArRetFunctor2.html" title="Base class for functors with a return value with 2 parameters. ">ArRetFunctor2</a>, <a class="el" href="classArRetFunctor3.html" title="Base class for functors with a return value with 3 parameters. ">ArRetFunctor3</a></p>
<p>These 8 functors are the only thing a piece of code that wants a functor will ever need. But these classes are abstract classes and can not be instantiated. On the other side, the piece of code that wants to be called back will need the functor classes that know about the class type. These functors are:</p>
<p><a class="el" href="classArFunctorC.html" title="Functor for a member function. ">ArFunctorC</a>, <a class="el" href="classArFunctor1C.html" title="Functor for a member function with 1 parameter. ">ArFunctor1C</a>, <a class="el" href="classArFunctor2C.html" title="Functor for a member function with 2 parameters. ">ArFunctor2C</a>, <a class="el" href="classArFunctor3C.html" title="Functor for a member function with 3 parameters. ">ArFunctor3C</a> <a class="el" href="classArRetFunctorC.html" title="Functor for a member function with return value. ">ArRetFunctorC</a>, <a class="el" href="classArRetFunctor1C.html" title="Functor for a member function with return value and 1 parameter. ">ArRetFunctor1C</a>, <a class="el" href="classArRetFunctor2C.html" title="Functor for a member function with return value and 2 parameters. ">ArRetFunctor2C</a>, <a class="el" href="classArRetFunctor3C.html" title="Functor for a member function with return value and 3 parameters. ">ArRetFunctor3C</a></p>
<p>These functors are meant to be instantiated and passed of to a piece of code that wants to use them. That piece of code should only know the functor as one of the functor classes without the 'C' in it.</p>
<p>Note that you can create these FunctorC instances with default arguments that are then used when the invoke is called without those arguments... These are quite useful since if you have a class that expects an <a class="el" href="classArFunctor.html" title="An object which allows storing a generalized reference to a method with an object instance to call la...">ArFunctor</a> you can make an <a class="el" href="classArFunctor1C.html" title="Functor for a member function with 1 parameter. ">ArFunctor1C</a> with default arguments and pass it as an <a class="el" href="classArFunctor.html" title="An object which allows storing a generalized reference to a method with an object instance to call la...">ArFunctor</a>... and it will get called with that default argument, this is useful for having multiple functors use the same function with different arguments and results (just takes one functor each).</p>
<p>Functors now have a <a class="el" href="classArFunctor.html#a4c94bb50825f76071b71b316dd0bb710" title="Gets the name of the functor. ">getName()</a> method, this is useful as an aid to debugging, allowing you to display the name of some functor being used.</p>
<p><b>Java Wrapper Library:</b> You can subclass <a class="el" href="classArFunctor.html" title="An object which allows storing a generalized reference to a method with an object instance to call la...">ArFunctor</a> and override <a class="el" href="classArFunctor.html#a1c87b5ef305e653fe13258ebe77faee3" title="Invokes the functor. ">invoke()</a>.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="functorExample_8cpp-example.html">functorExample.cpp</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="functorExample_8cpp-example.html#_a0">functorExample.cpp</a>.</dd>
</dl></div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="ad9a7fc33dcc48e45635aaae33c3e6fa2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ArFunctor::setNameVar </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>...</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sets the name of the functor with formatting. </p>
<p><b>Java and Python Wrappers:</b> Not available in Java or Python wrapper libraries. use <a class="el" href="classArFunctor.html#acbc4f69001bac535e6507b4ca696c7d7" title="Sets the name of the functor. ">setName()</a> </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>ArFunctor.h</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="classArFunctor.html">ArFunctor</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
